#pragma warning disable 108
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using Cephei;
using Cephei.Generic;
using Cephei.QL.Times;
using Cephei.QL;
using Cephei.QL.Indexes;
using Cephei.QL.Termstructures;
using Cephei.QL.Models;
namespace Cephei.QL.Models.Shortrate.Calibrationhelpers
{
     // <summary> 
	// ! \bug This helper does not register with the passed IBOR index and with the evaluation date. Furthermore, the ATM exercise rate is not recalculated when any of its observables change.
	// </summary>
    [Guid ("A1EA39C2-A58F-4bff-9836-CB6A0449A3B5"),ComVisible(true)]
	public interface ISwaptionHelper : Cephei.QL.Models.ICalibrationHelper
	{
		///////////////////////////////////////////////////////////////
        // Methods
        //
        
		 Double BlackPrice(Double volatility);
        
		 Double ModelValue {get;}
    }

    // <summary> 
	// ! \bug This helper does not register with the passed IBOR index and with the evaluation date. Furthermore, the ATM exercise rate is not recalculated when any of its observables change. Factory
	// </summary>
   	[ComVisible(true)]
    public interface ISwaptionHelper_Factory // : Collection_Factory<ISwaptionHelper, ICell<ISwaptionHelper>>
    {
        ///////////////////////////////////////////////////////////////
        // Factory methods
        //
        
	    ISwaptionHelper Create (Cephei.QL.Times.IPeriod maturity, Cephei.QL.Times.IPeriod length, Cephei.QL.IQuote volatility, Cephei.QL.Indexes.IIborIndex index, Cephei.QL.Times.IPeriod fixedLegTenor, Cephei.QL.Times.IDayCounter fixedLegDayCounter, Cephei.QL.Times.IDayCounter floatingLegDayCounter, Cephei.QL.Termstructures.IYieldTermStructure termStructure, Microsoft.FSharp.Core.FSharpOption<QL.Models.CalibrationHelper.CalibrationErrorTypeEnum> errorType, Cephei.QL.IPricingEngine QL_Pricer);
    }
}

